//********************************************************************
//	created:	12:10:2011   21:20
//	filename: 	mysqldatabase.h
//	author:		tiamo
//	purpose:	mysql database
//********************************************************************

#pragma once

namespace mysql
{
	//
	// sql database
	//
	class Database
	{
	public:
		//
		// constructor
		//
		Database()															{mConnection = nullptr;}

		//
		// destructor
		//
		virtual ~Database()													{close();}

		//
		// close
		//
		void close();

		//
		// open
		//
		void open(UniString const& host, UniString const& userName, UniString const& password, UniString const& database);

		//
		// start transaction
		//
		void startTransaction();

		//
		// commit transaction
		//
		void commitTransaction();

		//
		// rollback transcation
		//
		bool rollbackTransaction();

		//
		// get last inserted it
		//
		uint64_t getlastInsertedId();

		//
		// create stmt
		//
		Statement createStatement();

		//
		// error
		//
		void sqlError(bool throwException = true, MYSQL_STMT* sqlStatement = nullptr);

	private:
		//
		// disable copy/assign
		//
		Database(Database const& rhs);
		Database& operator=(Database const& rhs);

		//
		// open
		//
		void open();

	private:
		//
		// connection
		//
		MYSQL*																mConnection;

		//
		// host
		//
		UniString															mHost;

		//
		// user name
		//
		UniString															mUserName;

		//
		// password
		//
		UniString															mPassword;

		//
		// database
		//
		UniString															mDatabase;
	};
}
